package com.java.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.java.common.utils.PageUtils;
import com.java.pojo.Items;
import com.java.pojo.ItemsImg;
import com.java.pojo.ItemsParam;
import com.java.pojo.ItemsSpec;
import com.java.pojo.vo.CommentLevelCountsVO;
import com.java.pojo.vo.ItemCommentVO;
import com.java.pojo.vo.ShopcartVO;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * 商品表 商品信息相关表：分类表，商品图片表，商品规格表，商品参数表
 *
 * @author jl
 * @since 2020-10-13 11:31:41
 */
public interface ItemsService extends IService<Items> {

    PageUtils queryPage(Map<String, Object> params);

    /**
     * 根据商品ID查询详情
     */
    Items queryItemById(String id);

    /**
     * 根据商品ID查询商品图片列表
     */
    List<ItemsImg> queryItemImgList(String itemId);

    /**
     * 根据商品ID查询商品规格
     */
    List<ItemsSpec> queryItemSpecList(String itemId);

    /**
     * 根据商品ID查询商品参数
     */
    ItemsParam queryItemParam(String itemId);

    /**
     * 根据商品ID查询商品评价数量
     */
    CommentLevelCountsVO queryCommentCounts(String itemId);

    /**
     * 根据商品ID分页查询商品评价
     */
    PageUtils queryPageItemComments(Integer pageNo, Integer size, Integer commentLevel, String itemId);

    /**
     * 搜索商品列表
     */
    PageUtils searchItems(String keyword, String sort, Integer pageNo, Integer size);

    /**
     * 根据分类ID查询商品列表
     */
    PageUtils searchItems(Integer catId, String sort, Integer pageNo, Integer size);

    /**
     * 根据规格ids查询最新的购物车中的数据
     */
    List<ShopcartVO> queryItemsBySpecIds(String specIds);

    /**
     * 扣减库存
     */
    void decreaseItemSpecStock(String specId, Integer buyCounts);
}

